package com.join.template.core.grammar.generate;

import com.join.template.core.constant.EntityType;
import com.join.template.core.factory.JoinFactory;
import com.join.template.core.grammar.config.GenerateConfig;
import com.join.template.core.grammar.info.GrammarInfo;
import com.join.template.core.listener.GenerateListener;

import java.util.List;

/**
 * @author CAOYOU
 * @Title: GenerateGrammar
 * @date 2019/10/2110:10
 */
public interface Generate<P, C> {

    Generate setGenerateListener(GenerateListener generateListener);

    Generate setGenerateConfig(GenerateConfig generateConfig);

    Generate setGrammarInfoClass(Class<? extends GrammarInfo> grammarInfoClass);

    Generate generate(String name, EntityType type, String describe, List<C> bean);

    Generate generate(P bean);

    List<? extends GrammarInfo> getGrammarInfos();
}
